Recently, there have been efforts to develop systems to help in the rehabilitation of people who have suffered an injury or disability, and in particular to provide systems that can instruct the user to perform particular exercises, and that can then provide useful feedback to the user on their movements, without requiring a physiotherapist or other professional to be present. Of course, these systems can also be used in the presence of a physiotherapist or other professional to help them provide effective therapy to the user.
These computer-aided rehabilitation systems often include motion sensors, such as video cameras and suchlike, for monitoring the movements of the user during exercises, and a user feedback engine for analyzing the movements and for providing feedback to the user on their movements. The feedback can relate to specific instructions for the movement that the user is performing, for example “keep your back straight”, “keep your shoulders horizontal”, “keep your pelvis horizontal”, “stretch your arm”, “stretch your left leg” and “move slowly”. The feedback can also include other messages such as the number of repetitions of the exercise remaining and/or the remaining time (for a stretch, say).
The feedback will usually be audible messages, in the form of pre-recorded audio clips or generated by a speech synthesizer, since other forms of feedback, such as a display, are cumbersome to use during some exercises or for some body postures.
However, a problem with giving spoken feedback (whether in the form of audio clips or generated by a speech synthesizer) to the user is that only one sentence can be spoken at a time. Multiple messages can be generated at once, or within a short timescale, so there is a need to manage the order and presentation of the messages to the user. In addition, if a subsequent message is put into a queue while a first message is presented to the user, the subsequent message may lose its validity, and it may no longer be appropriate to present the subsequent message to the user. In addition, it can be very annoying for the user to be repeatedly (i.e. within a short timescale) presented with the same message.
Therefore, there is a need for a user feedback engine and a method of operating the same that manages a queue of messages for presentation to the user.